package com.heima.crm.controller;


import com.heima.crm.common.result.Result;
import com.heima.crm.pojos.dtos.TbCourseDto;
import com.heima.crm.pojos.entity.TbCourse;
import com.heima.crm.service.ITbCourseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 课程管理表 前端控制器
 * </p>
 *
 * @author MonsterSong
 * @since 2023-07-15
 */
@RestController
@RequestMapping("/api/v1/course")
@Slf4j
public class TbCourseController {
    @Autowired
    private ITbCourseService iTbCourseService;

    /**
     * 课程管理分页查询
     *
     * @param dto
     * @return
     */
    @GetMapping("/list")
//    @RequestBody==>接收josn数据格式==>表单参数请求
    public Result list(TbCourseDto dto) {
        log.info("分页查询。。。,{}", dto);
        return iTbCourseService.findPage(dto);
    }

    /**
     * 数据回显
     *
     * @param id
     * @return
     */
    @GetMapping("/echo/{id}")
    public Result echo(@PathVariable Long id) {
        log.info("课程数据回显。。。");
        return iTbCourseService.findById(id);
    }

    /**
     * 修改课程管理数据
     *
     * @param tbCourse
     * @return
     */
    @PutMapping("/edit")
    public Result edit(@RequestBody TbCourse tbCourse) {
        log.info("编辑课程。。。");
        return iTbCourseService.updateTbCourse(tbCourse);
    }
// TODO 页面原型没有批量删除

    /**
     * 删除课程
     *
     * @param id
     * @return
     */
    @DeleteMapping("/remove/{id}")
    public Result remove(@PathVariable Long id) {
        log.info("删除课程。。。");
        return iTbCourseService.deleteById(id);
    }

    /**
     * 新增课程
     *
     * @param tbCourse
     * @return
     */
    @PostMapping("/add")
    public Result add(@RequestBody TbCourse tbCourse) {
        log.info("新增课程。。。");
        return iTbCourseService.addTbCourse(tbCourse);
    }

    /**
     * 添加合同时，根据购买学科查询购买的课程
     *
     * @param subject
     * @return
     */
    @GetMapping("/{subject}")
    public Result subject(@PathVariable Long subject) {
        log.info("添加合同时，根据购买学科查询购买的课程。。。{}", subject);
        return iTbCourseService.findSubjectById(subject);
    }
}
